package net.mysoft.framework.util;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;

public class ChartUtil {
	//字体 
	private static final Font PLOT_FONT = new  Font("宋体", Font.BOLD, 15);  

	/**  
	 * 生成制图对象       
	 * @return JFreeChart对象 
	 */


	public static JFreeChart createChart(CategoryDataset dataSet) { 
		JFreeChart chart = null;  
	    chart = ChartFactory.createLineChart("企业历史评级项目级别迁移图", //图表标题 
	    		   															"项目名称",                  //X轴标题 
	    		   															"级别编号",            //Y轴标题 
	    		   															dataSet,                 //绘图数据集 
	    		   															PlotOrientation.VERTICAL,    //绘制方向 
	    		   															true,                        //是否显示图例 
	    		   															true,                        //是否采用标准生成器 
	    		   															false                       //是否生成超链接 
	       																);         
	       


	//设置标题字体 
	  chart.getTitle().setFont(new Font("隶书", Font.BOLD, 15));  
	//设置图例类别字体 
	   chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 10));         
	   chart.setBackgroundPaint(new Color(255,227,132));   //设置背景色 
	//获取绘图区对象 
	   CategoryPlot plot = chart.getCategoryPlot();  
	   plot.getDomainAxis().setLabelFont(PLOT_FONT);     
	//设置横轴字体 
	    plot.getDomainAxis().setTickLabelFont(PLOT_FONT);
	//设置坐标轴标尺值字体 
	    plot.getRangeAxis().setLabelFont(PLOT_FONT);    
	//设置纵轴字体 
	    plot.setBackgroundPaint(Color.WHITE);         
	//设置绘图区背景色 
	    plot.setRangeGridlinePaint(Color.RED);       
	//设置水平方向背景线颜色 
	    plot.setRangeGridlinesVisible(false);       
	//设置是否显示水平方向背景线,默认值为true 
	    plot.setDomainGridlinePaint(Color.RED);     
	//设置垂直方向背景线颜色 
	    plot.setDomainGridlinesVisible(false);    
	//设置是否显示垂直方向背景线,默认值为false 

	//获取折线对象 
	    
	        LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();   
	        renderer.setShapesVisible(true);
	        BasicStroke realLine = new BasicStroke(1.6f);       //设置实线 
	        float dashes[] = { 8.0f };                      //定义虚线数组 
	        BasicStroke brokenLine = new BasicStroke(1.6f,      //线条粗细 
																		               BasicStroke.CAP_SQUARE,             //端点风格 
																		               BasicStroke.JOIN_MITER,                 //折点风格 
																		               8.f,                                //折点处理办法 
																		               dashes,                         //虚线数组 
																		               0.0f);                          //虚线偏移量 
	       // renderer.setSeriesStroke(1, brokenLine);  //利用虚线绘制 
	     //   renderer.setSeriesStroke(2, brokenLine);   //利用虚线绘制 
	     //   renderer.setSeriesStroke(3, realLine);   //利用实线绘制 


	return chart;  
	}
	}

